Inhalt Vorige Nächste Homepage
;============================================================================
; Diese Funktion sucht eine Bytefolge innerhalb einer anderen Bytefolge. Die
; Suche findet dabei »Case-Sensitiv« statt, das heißt, »A« ist ungleich »a«.
; Der verwendete Suchalgorithmus arbeitet mit »3-Phase-PreCheck«, womit so-
; gar auf alten 68000er-Amigas noch ein Datendurchsatz von ca. 130 KByte/Sec
; erreicht werden kann (je nach Auslastung des Multitaskings).
;----------------------------------------------------------------------------
; Synopsis:    position = FindString (Source, SourceLen, Find, FindLen)
;                 D0*                   A0!      D0      A1!     D1
;
; Eingaben:    A0 --> STRPTR auf Adresse der zu durchsuchenden Bytefolge
;              D0 --> ULONG  Länge der zu durchsuchenden Folge in Byte
;              A1 --> STRPTR auf Adresse der zu suchenden Bytefolge
;              D1 --> ULONG  Länge der zu suchenden Folge in Byte
;
; Ergebnis:    D0 --> LONG - die Position, ab welchem Byte der durchsuchten
;                            Bytefolge die Gesuchte in ihr enthalten ist
;                             (ACHTUNG: Zählbeginn = 1 !!)
;                          - ist NULL, wenn die gesuchte Bytefolge nicht in
;                            der Durchsuchten enthalten ist
;                          - ist negativ, wenn ein Fehler aufgetreten ist
;                            (Find-String länger als Source-String)
;
; Bemerkung:   Ich habe die Zeiger auf die Bytefolgen als STRPTR deklariert,
;              da man diese Funktion wohl meistens für die Suche innerhalb
;              von alphanumerischen Zeichenketten benutzen wird. Die Funktion
;              kann aber genausogut zum Suchen von nicht druckbaren Zeichen
;              benutzt werden, d.h. sie bricht ihre Arbeit nicht etwa beim
;              Auftauchen eines 0-Bytes o.ä. ab. Um dies deutlich zu machen,
;              rede ich hier auch absichtlich immerzu nur von »Bytefolgen«,
;              und nicht etwa von »Strings« oder »Zeichenketten«.
;
; Siehe auch:  GetLength()
;============================================================================

Inhalt Vorige Nächste Homepage